package com.systop.domain.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Description: 购物车内容
 * @Author: jsj
 * @Date: 2023/3/11
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CartVo {
    private List<CartItem> cartItem;
    //商品数量
    private Integer countNum;
    //商品类型数量
    private Integer countType;
    //商品总价
    private BigDecimal totalAmount;

    //返回商品总数
    public Integer getCountNum() {
        return (cartItem == null || cartItem.size() == 0)
                ? 0 :
                cartItem.stream().map(CartItem::getCount).reduce(Integer::sum).get();
    }

    //返回商品类型总数
    public Integer getCountType() {
        return (cartItem == null || cartItem.size() == 0)
                ? 0 : cartItem.size();
    }

    //返回订单总价
    public BigDecimal getTotalAmount() {
        return (cartItem == null || cartItem.size() == 0)
            ? new BigDecimal(0) :
            cartItem.stream().filter(CartItem::getIsCheck).count()>0
            ?cartItem.stream().filter(CartItem::getIsCheck).map(CartItem::getTotalPrice).reduce(BigDecimal::add).get()
            : new BigDecimal(0);
    }
}
